package it.vidoc.utils;

import it.vidoc.mybatis.sqlquery.SqlStrComRes;
import it.vidoc.mybatis.sqlquery.SqlStrNomi;
import it.vidoc.mybatis.sqlquery.SqlStrPrvRes;

import java.util.ArrayList;

public class AmCercaSoggetto {

	public AmCercaSoggetto() {
	}
	
	public ArrayList<Integer> AmCercaSoggetto(String nome, String indirizzo, String provincia, String comune) {
		ArrayList<Integer> listKanagra1 = new ArrayList<Integer>();
		ArrayList<Integer> listKanagra2 = new ArrayList<Integer>();
		ArrayList<Integer> result = new ArrayList<Integer>();

		nome = nome.replaceAll(" {2,}", " ");
		String[] arrParole = nome.trim().split(" ");
		
		for (int i = 0; i < arrParole.length; i++) {
			if (i == 0) {
				listKanagra1 = new SqlStrNomi().GetStrNomi(arrParole[i].trim());
				result.clear();
				result.addAll(listKanagra1);
			} else {
				listKanagra2 = new SqlStrNomi().GetStrNomi(arrParole[i].trim());
				ArrayList<Integer> tmpL = new IntersectKanagra().IntersectKanagra(listKanagra1, listKanagra2);
				result.clear();
				result.addAll(tmpL);
				listKanagra1.clear();
				listKanagra1.addAll(result);
			}
		}
		
		if (result.size() > 0) {
			if (comune.length() > 1) {
				if (!(comune.equals("-----"))) {
					listKanagra1 = new SqlStrComRes().GetStrComRes(comune);
					if (listKanagra1.size() < 1) {
						result.clear();
					} else {
						ArrayList<Integer> tmpL = new IntersectKanagra().IntersectKanagra(listKanagra1, result);
						result.clear();
						result.addAll(tmpL);
					}
				} else {
					if (provincia.length() > 1) {
						listKanagra1 = new SqlStrPrvRes().GetStrPrvRes(provincia);
						if (listKanagra1.size() < 1) {
							result.clear();
						} else {
							ArrayList<Integer> tmpL = new IntersectKanagra().IntersectKanagra(listKanagra1, result);
							result.clear();
							result.addAll(tmpL);
						}
					}
				}
			}
		}
		
//		if (result.size() > 0) {
//			if (provincia.length() > 1) {
//				listKanagra1 = new SqlStrPrvRes().GetStrPrvRes(provincia);
//				if (listKanagra1.size() < 1) {
//					result.clear();
//				} else {
//					ArrayList<Integer> tmpL = new IntersectKanagra().IntersectKanagra(listKanagra1, result);
//					result.clear();
//					result.addAll(tmpL);
//				}
//			}
//		}
		
		return result;
	}
}
